home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / gnu / recode33.lha / recode-3.3 / recode.info (.txt) < prev    next >
GNU Info File  |  1994-12-20  |  69KB  |  1,345 lines

  1. This is Info file recode.info, produced by Makeinfo-1.55 from the input
  2. file recode.texi.
  3.    This file documents the `recode' command, which has the purpose of
  4. converting files between various character sets and usages.
  5.    Copyright (C) 1990, 1993 by the Free Software Foundation, Inc.
  6.    Permission is granted to make and distribute verbatim copies of this
  7. manual provided the copyright notice and this permission notice are
  8. preserved on all copies.
  9.    Permission is granted to copy and distribute modified versions of
  10. this manual under the conditions for verbatim copying, provided that
  11. the entire resulting derived work is distributed under the terms of a
  12. permission notice identical to this one.
  13.    Permission is granted to copy and distribute translations of this
  14. manual into another language, under the above conditions for modified
  15. versions, except that this permission notice may be stated in a
  16. translation approved by the Foundation.
  17. File: recode.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
  18.    This file documents the `recode' command, as of release 3.3.  You
  19. may find in this document:
  20. * Menu:
  21. * Introduction::        What is the purpose of this program
  22. * Invoking recode::     How to use this program
  23. * RFC 1345 charsets::   Charsets from RFC 1345
  24. * ISO charsets::        Charsets based on ASCII
  25. * IBM charsets::        Charsets based on IBM
  26. * CDC charsets::        Charsets based on CDC
  27. * Micro charsets::      Non-IBM micro-computer charsets
  28. * Other charsets::      Some other charsets
  29. * Internals::           Internal aspects
  30.  -- The Detailed Node Listing --
  31. What is the purpose of this program
  32. * Overview::            Overview of charsets
  33. * Contributing::        Contributions and bug reports
  34. Charsets based on ASCII
  35. * ascii::               Usual ASCII
  36. * ISO 8859-1 charset::  ASCII extended by Latin Alphabets
  37. * ascii-bs::            ASCII 7-bits, BS to overstrike
  38. * flat::                ASCII without diacritics nor underline
  39. Charsets based on IBM
  40. * ebcdic::              EBCDIC codes
  41. * ibmpc::               IBM's PC code
  42. * iconqnx::             Unisys' ICON code
  43. Charsets based on CDC
  44. * Display Code::        Control Data's Display Code
  45. * cdcnos::              ASCII 6/12 from NOS
  46. * bangbang::            ASCII "bang bang"
  47. Non-IBM micro-computer charsets
  48. * applemac::            Apple's Macintosh code
  49. * atarist::             Atari ST code
  50. * nextstep::            NeXT international code
  51. Some other charsets
  52. * latex::               ASCII with LaTeX codes
  53. * texte::               ASCII with easy French conventions
  54. ASCII with easy French conventions
  55. * Diacritics::          Diacritics
  56. * Ending diaeresis::    List of words ending with diaeresis
  57. Internal aspects
  58. * Main flow::           Overall organization
  59. * New charsets::        Adding new charsets
  60. File: recode.info,  Node: Introduction,  Next: Invoking recode,  Prev: Top,  Up: Top
  61. What is the purpose of this program
  62. ***********************************
  63.    This `recode' program has the purpose of converting files between
  64. various character sets and usages.  When exact transliterations are not
  65. possible, as it is often the case, the program may get rid of the
  66. offending characters or fall back on approximations.
  67.    Let us coin the term "charset" to represent, without distinction, a
  68. character set "per se" or a particular usage of a character set.  This
  69. program recognizes or produces around 150 such charsets.  Since it can
  70. convert each charset to almost any other one, many thousands of
  71. different conversions are possible.
  72.    This tool pays special attention to superimposition of diacritics for
  73. French representation.  This orientation is mostly historical, it does
  74. not impair the usefulness, generality or extensibility of the program.
  75. * Menu:
  76. * Overview::            Overview of charsets
  77. * Contributing::        Contributions and bug reports
  78. File: recode.info,  Node: Overview,  Next: Contributing,  Prev: Introduction,  Up: Introduction
  79. Overview of charsets
  80. ====================
  81.    Recoding is currently possible between most of the charsets
  82. described in RFC 1435.  *Note RFC 1345 charsets::.
  83.    Recode also handles some charsets in more specialized ways.  These
  84.    * usual 7-bit ASCII: without any diacritics, or else: using
  85.      backspace for overstriking; Unisys' ICON convention; TeX/LaTeX
  86.      coding; easy French conventions for electronic mail;
  87.    * 8-bit extensions to ASCII: ISO Latin-1, Atari ST code, IBM's code
  88.      for the PC, Apple's code for the Macintosh, NeXTSTEP code;
  89.    * 6-bit escaped ASCII based on CDC display code: 6/12 code from NOS;
  90.      bang-bang code from Universit'e de Montr'eal;
  91.    * non-ASCII codes: three flavors of EBCDIC.
  92.    The recent introduction of RFC 1345 in GNU `recode' has brought with
  93. it a few charsets having the functionnality of older ones, but yet
  94. being different in subtle ways.  The effects have not been fully
  95. investigated yet, so for now, clashes are avoided, the old and new
  96. charsets are kept well separate.  For example, wizards would be
  97. interested in comparing the output of these two commands:
  98.      recode -vh ibmpc:applemac
  99.      recode -vh ibm437:macintosh
  100. The first command uses only charsets prior to RFC 1345 introduction.
  101. Both methods give different recodings, the first also properly recodes
  102. end of lines.  These differences are annoying, the fuziness will have to
  103. be explained and settle down one day.
  104. File: recode.info,  Node: Contributing,  Prev: Overview,  Up: Introduction
  105. Contributions and bug reports
  106. =============================
  107.    Even being the `recode' author and current maintainer, I am no
  108. specialist in charset standards.  I only made `recode' along the years
  109. to solve my own needs, but felt it was extendable for the needs of
  110. others.  Some GNU people liked the program structure and suggested to
  111. make it more widely available.  I rely on GNU users judgement for what
  112. is best to be done next.
  113.    Properly protecting GNU `recode' about possible copyright fights is
  114. a pain for me and for contributors, but we cannot avoid addressing the
  115. issue in the long run.  Besides, the Free Software Foundation, which
  116. mandates the GNU project, is very sensible to this matter.  GNU
  117. standards require that I be cautious before looking at copyrighted code.
  118. The safest and simplest way for me is to gather ideas and reprogram them
  119. anew, even if this might slow me down considerably.  For contributions
  120. going beyond a few lines of code here and there, the FSF definitely
  121. requires employer disclaimers and copyright assignments.
  122.    Many users contributed to GNU `recode' already, I am grateful to
  123. them for their interest and involvement.  Some suggestions can be
  124. integrated quickly while some others have to be delayed, I have to draw
  125. a line somewhere when time comes to make a new release, about what would
  126. go in it and what would go in the next.  Also, when you contribute
  127. something to `recode', *please* explain what it is about.  Do not take
  128. for granted that I know those charsets which are familiar to you.  Your
  129. explanations could well find their way into this documentation, too.
  130.    Mail suggestions, documentation errors and bug reports to
  131. `bug-gnu-utils@prep.ai.mit.edu' or, if you prefer, directly to Francois
  132. Pinard `pinard@iro.umontreal.ca'.  Do not be afraid to report details,
  133. because this program is the mere aggregation of hundreds of details.
  134. File: recode.info,  Node: Invoking recode,  Next: RFC 1345 charsets,  Prev: Introduction,  Up: Top
  135. How to use this program
  136. ***********************
  137.    The general format of the program call is one of:
  138.      recode [OPTION]... [CHARSET]
  139.      recode [OPTION]... [BEFORE]:[AFTER] [FILE]...
  140.    The second form is the common case.  Each file FILE will be read
  141. assuming it is coded with charset BEFORE, it will be recoded over
  142. itself so to use the charset AFTER.  If there is no such FILE, the
  143. program rather acts as a filter and recode standard input to standard
  144. output.
  145.    The available options are:
  146. `--copyright'
  147.      Given this option, all other parameters and options are ignored.
  148.      The program prints briefly the Copyright and copying conditions.
  149.      See the file `COPYING' in the distribution for full statement of
  150.      the Copyright and copying conditions.
  151. `--auto-check'
  152.      In this special mode, `recode' ignore arguments and most options.
  153.      It diagnostics itself by analysing connectivity of the various
  154.      charsets, reporting on standard output, then it exits without
  155.      recoding any file.
  156.      For each possible pair of different charsets, it prints on standard
  157.      output how many single steps are needed for achieving the recoding
  158.      and how many can be saved by step merging.  If a recoding cannot
  159.      be done, the word `UNACHIEVABLE' is printed instead.  However,
  160.      this special line is completely suppressed if option `-x'
  161.      specified some charset to ignore.
  162.      The option `-hNAME' affects the resulting output, because there
  163.      are more merging rules when this option is in effect.  Other
  164.      options affect the result: `-d', `-g' and, notably, `-s'.
  165.      There was a time, in GNU `recode' development, when this option was
  166.      reasonnably interesting.  With the greater number of handled
  167.      charsets, it became *very* slow, while generating a great deal of
  168.      output.  It can be made slightly more practical with `-x.', which
  169.      effectively disable most RFC 1345 charsets from the report.
  170. `--colons'
  171.      With `texte' Easy French conventions, use the column `:' instead
  172.      of the double-quote `"' for marking diaeresis.  *Note texte::.
  173. `--diacritics'
  174.      While converting to or from `latex' charset, limit conversion to
  175.      diacritics only.  This is particularily useful when people write
  176.      what would be valid TeX or LaTeX files, if only they were using TeX
  177.      macros for applying diacritics instead of using the diacriticized
  178.      characters directly from the underlying character set.
  179.      While converting to `latex' charset, this option assumes that all
  180.      special characters to TeX or LaTeX are properly escaped already;
  181.      backslashes are also transmitted litterally.  While converting the
  182.      other way, this option prevents all attempts at recognizing TeX or
  183.      LaTeX escaped representation of single characters of the other
  184.      charset.  *Note latex::.
  185. `--force'
  186.      This option *will* is necessary for a file to be transformed
  187.      irreversibly, regardless of the fact a file is recoded over itself
  188.      or produced on standard output.  Beware that in this `recode'
  189.      version, this option is only recognized, but otherwise ignored:
  190.      *if it is found that the recoding is not fully reversible, the
  191.      file replacement is still unconditionnaly done*.
  192.      Even if GNU `recode' tries hard at keeping the recodings
  193.      reversible, it cannot make any promise!  In particular, consider:
  194.         * Some transformations are known to be fully reversible for all
  195.           inputs: `recode' seeks for them (also see option `-s').  This
  196.           is not true for all transformations, however.
  197.         * Usually, reversibility depends on file contents and cannot be
  198.           told beforehand.  Further, reversibility is never absolute
  199.           accross successive versions of the program.  Even correcting
  200.           a small bug in a mapping could induce slight discrepancies
  201.           later: please keep only reasonnable expectations about
  202.           reverse recodings.
  203.         * Reversibility is easily lost by merging.  This is best
  204.           explained through an example.  If you reversibly recode a
  205.           file from charset `A' to charset `B', then you reversibly
  206.           recode the result from charset `B' to charset `C', you cannot
  207.           expect to recover the original file by merely recoding from
  208.           charset `C' directly to charset `A'.  You will instead have
  209.           to recode from charset `C' back to charset `B', and only then
  210.           from charset `B' to charset `A'.
  211.         * Faulty files create a particular problem.  Consider an
  212.           example, recoding from `ibmpc' to `latin1'.  End of lines are
  213.           represented as `\r\n' is `ibmpc' and as `\n' in latin1.
  214.           There is no way by which a faulty `ibmpc' file containing a
  215.           `\n' not preceeded by `\r' be translated into a `latin1'
  216.           file, and then back.
  217.         * There is another difficulty arising from code equivalences.
  218.           For example, in a `latex' charset file, the string `\^\i{}'
  219.           could be recoded back and forth though another charset and
  220.           become `\^{\i}'.  Even if the resulting file is equivalent to
  221.           the original one, it is not identical.
  222. `--graphics'
  223.      This option is only meaningful while getting *out* of the `ibmpc'
  224.      charset.  In this charset, characters 176 to 223 are used for
  225.      constructing rulers and boxes, using simple or double horizontal or
  226.      vertical lines.  This option forces the automatic selection of
  227.      ASCII characters for approximating these rulers and boxes, at cost
  228.      of making the transformation irreversible.
  229. `-h[NAME]'
  230. `--header[=NAME]'
  231.      Instead of recoding files, `recode' writes a C source file on
  232.      standard output and exits.  This source is meant to be included in
  233.      a regular C program: its purpose is to declare and initialize an
  234.      array, named NAME, which represents the requested recoding.  If
  235.      NAME is not specified, then it defaults to `BEFORE_to_AFTER',
  236.      where BEFORE is the starting charset and AFTER is the goal charset.
  237.      Even if `recode' tries its best, this option does not always
  238.      succeed in producing the requested C table.  It will however,
  239.      provided the recoding can be internally represented by only one
  240.      step after the optimization phase, and if this merged step conveys
  241.      a one-to-one or a one-to-many explicit table.  But this is all
  242.      fairly technical.  Better try and see!
  243.      Beware that other options might affect the produced C tables,
  244.      these are: `-d', `-g' and, particularily, `-s'.
  245. `--sequence=files'
  246.      When the recoding requires a combination of two or more elementary
  247.      recoding steps, this option forces many passes over the data, using
  248.      intermediate files between passes.  This is the default behaviour
  249.      when files are recoded over themselves.  If this option is
  250.      selected in filter mode, that is, when the program reads standard
  251.      input and writes standard output, it might take longer for
  252.      programs further down the pipe chain to start receiving some
  253.      recoded data.
  254. `-l[FORMAT]'
  255. `--list[=FORMAT]'
  256.      This option asks for information about all charsets, or about one
  257.      particular charset.  No file will be recoded.
  258.      If there is no non-option arguments, `recode' ignores the FORMAT
  259.      value of the option, it writes a sorted list of charset names on
  260.      standard output, one per line.  When a charset name have aliases
  261.      or synonyms, they follow the true charset name on its line,
  262.      presented in lexicographical order from left to right.  This list
  263.      is over one hundred lines.  It is best used with `grep', as in:
  264.           recode -l | grep greek
  265.      There might be one non-option argument, in which case it is
  266.      interpreted as a charset name, possibly abbreviated to any non
  267.      ambiguous prefix.  This particular usage of the `-l' option is
  268.      obeyed *only* for charsets having an RFC 1345 style internal
  269.      description.  Even if most charsets have this property, some do
  270.      not, then option `-l' cannot be used to detail these particular
  271.      charsets.  For knowing if a particular charset can be listed this
  272.      way, you should merely try and see if this works.  The FORMAT
  273.      value of the option can be any of:
  274.     `decimal'
  275.           This format asks for the production on standard output of a
  276.           concise tabular display of the charset, in which character
  277.           code values are expressed in decimal.
  278.     `octal'
  279.           This format uses octal instead of decimal in the concise
  280.           tabular display of the charset.
  281.     `hexadecimal'
  282.           This format uses hexadecimal instead of decimal in the
  283.           concise tabular display of the charset.
  284.     `full'
  285.           This format requests an extensive display of the charset on
  286.           standard output, using one line per character showing its
  287.           decimal, hexadecimal and octal code values, and also a
  288.           descriptive comment which is indeed the 10646 character name.
  289.      When option `-l' is used together with a CHARSET argument, the
  290.      FORMAT defaults to `decimal'.
  291. `--sequence=popen'
  292.      When the recoding requires a combination of two or more elementary
  293.      recoding steps, this option forces the creation of a chain of
  294.      program instances initiated through the `popen(3)' library call,
  295.      all operating in parallel.  In filter mode, at cost of some
  296.      overhead, recoded data will be available soon after the program
  297.      starts, even if many elementary recoding steps are required.
  298.      If, at installation time, the `popen(3)' call is said to be
  299.      unavailable, selecting option `-o' is equivalent to selecting
  300.      option `-i'.
  301. `--sequence=pipe'
  302.      When the recoding requires a combination of two or more elementary
  303.      recoding steps, this option forces the program to fork itself into
  304.      a few copies interconnected with pipes, using the `pipe(2)' system
  305.      call.  All copies of the program operate in parallel.  This method
  306.      is similar to the method used through option `-o', but is slightly
  307.      more efficient.  This is the default behaviour in filter mode.  If
  308.      this option is used when files are recoded over themselves, this
  309.      should save some disk space, at cost of more system overhead.
  310.      If, at installation time, the `pipe(2)' call is said to be
  311.      unavailable, selecting option `-p' is equivalent to selecting
  312.      option `-o'.  If both `pipe(2)' and `popen(3)' are unavailable,
  313.      selecting option `-p' is equivalent to selecting option `-i'.
  314. `--strict'
  315.      By using this option, the user requests that `recode' be very
  316.      strict while recoding a file, merely loosing in the transformation
  317.      any character which is not explicitely mapped from a charset to
  318.      another.  This option renders the recoding less likely reversible,
  319.      so it also implies option `-f'.
  320.      When this option is not used, `recode' automatically tries to fill
  321.      mappings with inventend correspondances, making them fully
  322.      reversible in many instances.  This filling is not made at random:
  323.      the algorithm tries to stick to the identity mapping and, when not
  324.      possible, prefer small permutation cycles.  This means that, by
  325.      default, `recode' may sometimes produce *funny* characters,
  326.      however these are quite helpful when one changes his/her mind and
  327.      wants to revert to the prior recoding.
  328. `--touch'
  329.      The *touch* option is meaningful only when files are recoded over
  330.      themselves.  Without it, the timestamps associated with files are
  331.      preserved, to reflect the fact that changing the code of a file
  332.      does not really alter its informational contents.  When the user
  333.      wants the recoded files to be timestamped at the recoding time,
  334.      this option inhibits the automatic protection of the timestamps.
  335. `--verbose'
  336.      Before doing any recoding, the program will first print on `stderr'
  337.      the list of all intermediate charsets planned for recoding,
  338.      starting with the BEFORE charset and ending with the AFTER charset.
  339.      It also prints an indication of the recoding quality, as one of
  340.      the word `reversible', `one to one', `one to many', `many to one'
  341.      or `many to many'.
  342.      This information will appear once or twice.  It is shown a second
  343.      time only when the optimization and step merging phase succeeds in
  344.      creating a new single step.
  345.      This option also has a second effect.  The program will print on
  346.      `stderr' one message per FILE recoded, so to let the user informed
  347.      of the progress of its command.
  348.      An easy way to know beforehand the sequence or quality of a
  349.      recoding is by using the command such as:
  350.           recode -v BEFORE:AFTER < /dev/null
  351.      using the fact that, *so far* in `recode', an empty input file
  352.      produces an empty output file.
  353. `-x=CHARSET'
  354. `--ignore=CHARSET'
  355.      This option tells the program to ignore any recoding path through
  356.      the specified CHARSET, so disabling any single step using this
  357.      charset as a start or end point.  This may be used when the user
  358.      wants to force `recode' in using an alternate recoding path.
  359.      CHARSET may be abbreviated to any unambiguous prefix.  For
  360.      convenience, the value `.' is an alias for `RFC 1345', so the
  361.      option `-x.' effectively disables *all* RFC 1345 tables at once.
  362. `--help'
  363.      The program merely prints a page of help on standard output, and
  364.      exits without doing any recoding.
  365. `--version'
  366.      The program merely prints its version numbers on standard output,
  367.      and exits without doing anything else.
  368.    The BEFORE:AFTER argument specifies the start charset and the goal
  369. charset.  The allowable values for BEFORE or AFTER are described in the
  370. remainder of this document.  Charsets may have predefined alternate
  371. names, or aliases, which are equally acceptable.
  372.    In the BEFORE:AFTER argument only, a backslash may be used to quote
  373. the next character of a charset name.  This might be useful for
  374. preventing a colon to be mistakenly interpreted as the separator between
  375. BEFORE and AFTER.  Rather, the colon could be omitted, because while
  376. recognizing a charset name or alias, GNU `recode' ignores all
  377. characters besides letters and digits.  There is also no distinction
  378. between upper and lower case.  Charset names or aliases may always be
  379. abbreviated to any unambiguous prefix.
  380.    One or both of the BEFORE or AFTER keywords may be omitted, but the
  381. colon which separates them cannot.  An omitted keyword implies the
  382. usual or default code in usage on the system where this program is
  383. installed.  Usually, this default code is `latin1' for UNIX systems or
  384. `ibmpc' for MS-DOS machines.
  385. File: recode.info,  Node: RFC 1345 charsets,  Next: ISO charsets,  Prev: Invoking recode,  Up: Top
  386. Charsets from RFC 1345
  387. **********************
  388.    In the GNU `recode' distribution, there is a copy of RFC 1345:
  389.      "Character Mnemonics & Character Sets", K. Simonsen, Request for
  390.      Comments no. 1345, Network Working Group, June 1992.
  391.    This document is also available by anonymous ftp at `nic.ddn.mil' in
  392. directory `rfc' as file `rfc1345.txt'.  This report defines many
  393. character mnemonics and character sets.
  394.    GNU `recode' implements most of RFC 1345, however:
  395.   1. It does not recognize 16-bits charsets: `GB_2312-80',
  396.      `JIS_C6226-1978', `JIS_C6226-1983', `JIS_X0212-1990' and
  397.      `KS_C_5601-1987'.
  398.   2. It does not recognize those charsets which combine two characters
  399.      for representing a third: `ANSI_X3.110-1983', `ISO_6937-2-add',
  400.      `T.101-G2', `T.61-8bit', `iso-ir-90' and `videotex-suppl'.
  401.   3. It interprets the charset `isoir91' as `NATS-DANO' (alias
  402.      `iso-ir-9-1', *not* as `JIS_C6229-1984-a' (alias `iso-ir-91').  So
  403.      better avoid using these two alias names.
  404.   4. It interprets the charset `isoir92' as `NATS-DANO-ADD' (alias
  405.      `iso-ir-9-2', *not* as `JIS_C6229-1984-b' (alias `iso-ir-92').  So
  406.      better avoid using these two alias names.
  407.   5. It ignores all about code overloading, but still processes
  408.      correctly the remainder of `dk-us' and `us-dk'.
  409.    Keld Simonsen `keld@dkuug.dk' did most of RFC 1345 himself, with
  410. some funding from Danish Standards and Nordic standards (INSTA) project.
  411. He also did the character set design work, with substantial input from
  412. Olle Jaernefors.  Keld typed in almost all of the tables, some have been
  413. contributed.  A number of people have checked the tables in various
  414. ways.  The RFC lists a number of people who helped.
  415. `ANSI_X3.4-1968'
  416.      `ANSI_X3.4-1986', `ASCII', `IBM367', `ISO646-US',
  417.      `ISO_646.irv:1991', `US-ASCII', `cp367', `iso-ir-6' and `us' are
  418.      aliases for this charset.  source: ECMA registry
  419. `ASMO_449'
  420.      `ISO_9036', `arabic7' and `iso-ir-89' are aliases for this charset.
  421.      source: ECMA registry
  422. `BS_4730'
  423.      `ISO646-GB', `gb', `iso-ir-4' and `uk' are aliases for this
  424.      charset.  source: ECMA registry
  425. `BS_viewdata'
  426.      `iso-ir-47' is an alias for this charset.  source: ECMA registry
  427. `CSA_Z243.4-1985-1'
  428.      `ISO646-CA', `ca', `csa7-1' and `iso-ir-121' are aliases for this
  429.      charset.  source: ECMA registry
  430. `CSA_Z243.4-1985-2'
  431.      `ISO646-CA2', `csa7-2' and `iso-ir-122' are aliases for this
  432.      charset.  source: ECMA registry
  433. `CSA_Z243.4-1985-gr'
  434.      `iso-ir-123' is an alias for this charset.  source: ECMA registry
  435. `CSN_369103'
  436.      `iso-ir-139' is an alias for this charset.  source: ECMA registry
  437. `DEC-MCS'
  438.      `dec' is an alias for this charset.  VAX/VMS User's Manual, Order
  439.      Number: AI-Y517A-TE, April 1986.
  440. `DIN_66003'
  441.      `ISO646-DE', `de' and `iso-ir-21' are aliases for this charset.
  442.      source: ECMA registry
  443. `DS_2089'
  444.      `DS2089', `ISO646-DK' and `dk' are aliases for this charset.
  445.      source: Danish Standard, DS 2089, February 1974
  446. `EBCDIC-AT-DE'
  447.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  448. `EBCDIC-AT-DE-A'
  449.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  450. `EBCDIC-CA-FR'
  451.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  452. `EBCDIC-DK-NO'
  453.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  454. `EBCDIC-DK-NO-A'
  455.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  456. `EBCDIC-ES'
  457.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  458. `EBCDIC-ES-A'
  459.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  460. `EBCDIC-ES-S'
  461.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  462. `EBCDIC-FI-SE'
  463.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  464. `EBCDIC-FI-SE-A'
  465.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  466. `EBCDIC-FR'
  467.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  468. `EBCDIC-IT'
  469.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  470. `EBCDIC-PT'
  471.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  472. `EBCDIC-UK'
  473.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  474. `EBCDIC-US'
  475.      source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
  476. `ECMA-cyrillic'
  477.      `iso-ir-111' is an alias for this charset.  source: ECMA registry
  478.      `ISO646-ES' and `iso-ir-17' are aliases for this charset.  source:
  479.      ECMA registry
  480. `ES2'
  481.      `ISO646-ES2' and `iso-ir-85' are aliases for this charset.
  482.      source: ECMA registry
  483. `GB_1988-80'
  484.      `ISO646-CN', `cn' and `iso-ir-57' are aliases for this charset.
  485.      source: ECMA registry
  486. `GOST_19768-74'
  487.      `ST_SEV_358-88' and `iso-ir-153' are aliases for this charset.
  488.      source: ECMA registry
  489. `IBM037'
  490.      `cp037', `ebcdic-cp-ca', `ebcdic-cp-nl', `ebcdic-cp-us' and
  491.      `ebcdic-cp-wt' are aliases for this charset.  source: IBM NLS RM
  492.      Vol2 SE09-8002-01, March 1990
  493. `IBM038'
  494.      `EBCDIC-INT' and `cp038' are aliases for this charset.  source:
  495.      IBM 3174 Character Set Ref, GA27-3831-02, March 1990
  496. `IBM1026'
  497.      `CP1026' is an alias for this charset.  source: IBM NLS RM Vol2
  498.      SE09-8002-01, March 1990
  499. `IBM273'
  500.      `CP273' is an alias for this charset.  source: IBM NLS RM Vol2
  501.      SE09-8002-01, March 1990
  502. `IBM274'
  503.      `CP274' and `EBCDIC-BE' are aliases for this charset.  source: IBM
  504.      3174 Character Set Ref, GA27-3831-02, March 1990
  505. `IBM275'
  506.      `EBCDIC-BR' and `cp275' are aliases for this charset.  source: IBM
  507.      NLS RM Vol2 SE09-8002-01, March 1990
  508. `IBM277'
  509.      `EBCDIC-CP-DK' and `EBCDIC-CP-NO' are aliases for this charset.
  510.      source: IBM NLS RM Vol2 SE09-8002-01, March 1990
  511. `IBM278'
  512.      `CP278', `ebcdic-cp-fi' and `ebcdic-cp-se' are aliases for this
  513.      charset.  source: IBM NLS RM Vol2 SE09-8002-01, March 1990
  514. `IBM280'
  515.      `CP280' and `ebcdic-cp-it' are aliases for this charset.  source:
  516.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  517. `IBM281'
  518.      `EBCDIC-JP-E' and `cp281' are aliases for this charset.  source:
  519.      IBM 3174 Character Set Ref, GA27-3831-02, March 1990
  520. `IBM284'
  521.      `CP284' and `ebcdic-cp-es' are aliases for this charset.  source:
  522.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  523. `IBM285'
  524.      `CP285' and `ebcdic-cp-gb' are aliases for this charset.  source:
  525.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  526. `IBM290'
  527.      `EBCDIC-JP-kana' and `cp290' are aliases for this charset.
  528.      source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
  529. `IBM297'
  530.      `cp297' and `ebcdic-cp-fr' are aliases for this charset.  source:
  531.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  532. `IBM420'
  533.      `cp420' and `ebcdic-cp-ar1' are aliases for this charset.  source:
  534.      IBM NLS RM Vol2 SE09-8002-01, March 1990 IBM NLS RM p 11-11
  535. `IBM423'
  536.      `cp423' and `ebcdic-cp-gr' are aliases for this charset.  source:
  537.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  538. `IBM424'
  539.      `cp424' and `ebcdic-cp-he' are aliases for this charset.  source:
  540.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  541. `IBM437'
  542.      `437' and `cp437' are aliases for this charset.  source: IBM NLS
  543.      RM Vol2 SE09-8002-01, March 1990
  544. `IBM500'
  545.      `CP500', `ebcdic-cp-be' and `ebcdic-cp-ch' are aliases for this
  546.      charset.  source: IBM NLS RM Vol2 SE09-8002-01, March 1990
  547. `IBM850'
  548.      `850' and `cp850' are aliases for this charset.  source: IBM NLS
  549.      RM Vol2 SE09-8002-01, March 1990
  550. `IBM851'
  551.      `851' and `cp851' are aliases for this charset.  source: IBM NLS
  552.      RM Vol2 SE09-8002-01, March 1990
  553. `IBM852'
  554.      `852' and `cp852' are aliases for this charset.  source: IBM NLS
  555.      RM Vol2 SE09-8002-01, March 1990
  556. `IBM855'
  557.      `855' and `cp855' are aliases for this charset.  source: IBM NLS
  558.      RM Vol2 SE09-8002-01, March 1990
  559. `IBM857'
  560.      `857' and `cp857' are aliases for this charset.  source: IBM NLS
  561.      RM Vol2 SE09-8002-01, March 1990
  562. `IBM860'
  563.      `860' and `cp860' are aliases for this charset.  source: IBM NLS
  564.      RM Vol2 SE09-8002-01, March 1990
  565. `IBM861'
  566.      `861', `cp-is' and `cp861' are aliases for this charset.  source:
  567.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  568. `IBM862'
  569.      `862' and `cp862' are aliases for this charset.  source: IBM NLS
  570.      RM Vol2 SE09-8002-01, March 1990
  571. `IBM863'
  572.      `863' and `cp863' are aliases for this charset.  source: IBM
  573.      Keyboard layouts and code pages, PN 07G4586 June 1991
  574. `IBM864'
  575.      `cp864' is an alias for this charset.  source: IBM Keyboard
  576.      layouts and code pages, PN 07G4586 June 1991
  577. `IBM865'
  578.      `865' and `cp865' are aliases for this charset.  source: IBM DOS
  579.      3.3 Ref (Abridged), 94X9575 (Feb 1987)
  580. `IBM868'
  581.      `CP868' and `cp-ar' are aliases for this charset.  source: IBM NLS
  582.      RM Vol2 SE09-8002-01, March 1990
  583. `IBM869'
  584.      `869', `cp-gr' and `cp869' are aliases for this charset.  source:
  585.      IBM Keyboard layouts and code pages, PN 07G4586 June 1991
  586. `IBM870'
  587.      `CP870', `ebcdic-cp-roece' and `ebcdic-cp-yu' are aliases for this
  588.      charset.  source: IBM NLS RM Vol2 SE09-8002-01, March 1990
  589. `IBM871'
  590.      `CP871' and `ebcdic-cp-is' are aliases for this charset.  source:
  591.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  592. `IBM880'
  593.      `EBCDIC-Cyrillic' and `cp880' are aliases for this charset.
  594.      source: IBM NLS RM Vol2 SE09-8002-01, March 1990
  595. `IBM891'
  596.      `cp891' is an alias for this charset.  source: IBM NLS RM Vol2
  597.      SE09-8002-01, March 1990
  598. `IBM903'
  599.      `cp903' is an alias for this charset.  source: IBM NLS RM Vol2
  600.      SE09-8002-01, March 1990
  601. `IBM904'
  602.      `904' and `cp904' are aliases for this charset.  source: IBM NLS
  603.      RM Vol2 SE09-8002-01, March 1990
  604. `IBM905'
  605.      `CP905' and `ebcdic-cp-tr' are aliases for this charset.  source:
  606.      IBM 3174 Character Set Ref, GA27-3831-02, March 1990
  607. `IBM918'
  608.      `CP918' and `ebcdic-cp-ar2' are aliases for this charset.  source:
  609.      IBM NLS RM Vol2 SE09-8002-01, March 1990
  610. `IEC_P27-1'
  611.      `iso-ir-143' is an alias for this charset.  source: ECMA registry
  612. `INIS'
  613.      `iso-ir-49' is an alias for this charset.  source: ECMA registry
  614. `INIS-8'
  615.      `iso-ir-50' is an alias for this charset.  source: ECMA registry
  616. `INIS-cyrillic'
  617.      `iso-ir-51' is an alias for this charset.  source: ECMA registry
  618. `INVARIANT'
  619. `ISO_10367-box'
  620.      `iso-ir-155' is an alias for this charset.  source: ECMA registry
  621. `ISO_2033-1983'
  622.      `e13b' and `iso-ir-98' are aliases for this charset.  source: ECMA
  623.      registry
  624. `ISO_5427'
  625.      `iso-ir-37' is an alias for this charset.  source: ECMA registry
  626. `ISO_5427:1981'
  627.      `iso-ir-54' is an alias for this charset.  source: ECMA registry
  628. `ISO_5428:1980'
  629.      `iso-ir-55' is an alias for this charset.  source: ECMA registry
  630. `ISO_646.basic:1983'
  631.      `ref' is an alias for this charset.  source: ECMA registry
  632. `ISO_646.irv:1983'
  633.      `irv' and `iso-ir-2' are aliases for this charset.  source: ECMA
  634.      registry
  635. `ISO_6937-2-25'
  636.      `iso-ir-152' is an alias for this charset.  source: ECMA registry
  637. `ISO_8859-1:1987'
  638.      `CP819', `IBM819', `ISO-8859-1', `ISO_8859-1', `iso-ir-100', `l1'
  639.      and `latin1' are aliases for this charset.  source: ECMA registry
  640. `ISO_8859-2:1987'
  641.      `ISO-8859-2', `ISO_8859-2', `iso-ir-101', `l2' and `latin2' are
  642.      aliases for this charset.  source: ECMA registry
  643. `ISO_8859-3:1988'
  644.      `ISO-8859-3', `ISO_8859-3', `iso-ir-109', `l3' and `latin3' are
  645.      aliases for this charset.  source: ECMA registry
  646. `ISO_8859-4:1988'
  647.      `ISO-8859-4', `ISO_8859-4', `iso-ir-110', `l4' and `latin4' are
  648.      aliases for this charset.  source: ECMA registry
  649. `ISO_8859-5:1988'
  650.      `ISO-8859-5', `ISO_8859-5', `cyrillic' and `iso-ir-144' are
  651.      aliases for this charset.  source: ECMA registry
  652. `ISO_8859-6:1987'
  653.      `ASMO-708', `ECMA-114', `ISO-8859-6', `ISO_8859-6', `arabic' and
  654.      `iso-ir-127' are aliases for this charset.  source: ECMA registry
  655. `ISO_8859-7:1987'
  656.      `ECMA-118', `ELOT_928', `ISO-8859-7', `ISO_8859-7', `greek',
  657.      `greek8' and `iso-ir-126' are aliases for this charset.  source:
  658.      ECMA registry
  659. `ISO_8859-8:1988'
  660.      `ISO-8859-8', `ISO_8859-8', `hebrew' and `iso-ir-138' are aliases
  661.      for this charset.  source: ECMA registry
  662. `ISO_8859-9:1989'
  663.      `ISO-8859-9', `ISO_8859-9', `iso-ir-148', `l5' and `latin5' are
  664.      aliases for this charset.  source: ECMA registry
  665. `ISO_8859-supp'
  666.      `iso-ir-154' and `latin1-2-5' are aliases for this charset.
  667.      source: ECMA registry
  668.      `ISO646-IT' and `iso-ir-15' are aliases for this charset.  source:
  669.      ECMA registry
  670. `JIS_C6220-1969-jp'
  671.      `JIS_C6220-1969', `iso-ir-13', `katakana' and `x0201-7' are
  672.      aliases for this charset.  source: ECMA registry
  673. `JIS_C6220-1969-ro'
  674.      `ISO646-JP', `iso-ir-14' and `jp' are aliases for this charset.
  675.      source: ECMA registry
  676. `JIS_C6229-1984-a'
  677.      `jp-ocr-a' is an alias for this charset.  source: ECMA registry
  678. `JIS_C6229-1984-b'
  679.      `ISO646-JP-OCR-B' and `jp-ocr-b' are aliases for this charset.
  680.      source: ECMA registry
  681. `JIS_C6229-1984-b-add'
  682.      `iso-ir-93' and `jp-ocr-b-add' are aliases for this charset.
  683.      source: ECMA registry
  684. `JIS_C6229-1984-hand'
  685.      `iso-ir-94' and `jp-ocr-hand' are aliases for this charset.
  686.      source: ECMA registry
  687. `JIS_C6229-1984-hand-add'
  688.      `iso-ir-95' and `jp-ocr-hand-add' are aliases for this charset.
  689.      source: ECMA registry
  690. `JIS_C6229-1984-kana'
  691.      `iso-ir-96' is an alias for this charset.  source: ECMA registry
  692. `JIS_X0201'
  693.      `X0201' is an alias for this charset.
  694. `JUS_I.B1.002'
  695.      `ISO646-YU', `iso-ir-141', `js' and `yu' are aliases for this
  696.      charset.  source: ECMA registry
  697. `JUS_I.B1.003-mac'
  698.      `iso-ir-147' and `macedonian' are aliases for this charset.
  699.      source: ECMA registry
  700. `JUS_I.B1.003-serb'
  701.      `iso-ir-146' and `serbian' are aliases for this charset.  source:
  702.      ECMA registry
  703. `KSC5636'
  704.      `ISO646-KR' is an alias for this charset.
  705. `Latin-greek-1'
  706.      `iso-ir-27' is an alias for this charset.  source: ECMA registry
  707. `MSZ_7795.3'
  708.      `ISO646-HU', `hu' and `iso-ir-86' are aliases for this charset.
  709.      source: ECMA registry
  710. `NATS-DANO'
  711.      `iso-ir-9-1' is an alias for this charset.  source: ECMA registry
  712. `NATS-DANO-ADD'
  713.      `iso-ir-9-2' is an alias for this charset.  source: ECMA registry
  714. `NATS-SEFI'
  715.      `iso-ir-8-1' is an alias for this charset.  source: ECMA registry
  716. `NATS-SEFI-ADD'
  717.      `iso-ir-8-2' is an alias for this charset.  source: ECMA registry
  718. `NC_NC00-10:81'
  719.      `ISO646-CU', `cuba' and `iso-ir-151' are aliases for this charset.
  720.      source: ECMA registry
  721. `NF_Z_62-010'
  722.      `ISO646-FR', `fr' and `iso-ir-69' are aliases for this charset.
  723.      source: ECMA registry
  724. `NF_Z_62-010_(1973)'
  725.      `ISO646-FR1' and `iso-ir-25' are aliases for this charset.
  726.      source: ECMA registry
  727. `NS_4551-1'
  728.      `ISO646-NO', `iso-ir-60' and `no' are aliases for this charset.
  729.      source: ECMA registry
  730. `NS_4551-2'
  731.      `ISO646-NO2', `iso-ir-61' and `no2' are aliases for this charset.
  732.      source: ECMA registry
  733.      `ISO646-PT' and `iso-ir-16' are aliases for this charset.  source:
  734.      ECMA registry
  735. `PT2'
  736.      `ISO646-PT2' and `iso-ir-84' are aliases for this charset.
  737.      source: ECMA registry
  738. `SEN_850200_B'
  739.      `FI', `ISO646-FI', `ISO646-SE', `iso-ir-10' and `se' are aliases
  740.      for this charset.  source: ECMA registry
  741. `SEN_850200_C'
  742.      `ISO646-SE2', `iso-ir-11' and `se2' are aliases for this charset.
  743.      source: ECMA registry
  744. `T.61-7bit'
  745.      `iso-ir-102' is an alias for this charset.  source: ECMA registry
  746. `dk-us'
  747. `greek-ccitt'
  748.      `iso-ir-150' is an alias for this charset.  source: ECMA registry
  749. `greek7'
  750.      `iso-ir-88' is an alias for this charset.  source: ECMA registry
  751. `greek7-old'
  752.      `iso-ir-18' is an alias for this charset.  source: ECMA registry
  753. `hp-roman8'
  754.      `r8' and `roman8' are aliases for this charset.  source: LaserJet
  755.      IIP Printer User's Manual, HP part no 33471-90901, Hewlet-Packard,
  756.      June 1989.
  757. `latin-greek'
  758.      `iso-ir-19' is an alias for this charset.  source: ECMA registry
  759. `latin-lap'
  760.      `iso-ir-158' and `lap' are aliases for this charset.  source: ECMA
  761.      registry
  762. `latin6'
  763.      `iso-ir-157' and `l6' are aliases for this charset.  source: ECMA
  764.      registry
  765. `macintosh'
  766.      `mac' is an alias for this charset.  source: The Unicode Standard
  767.      ver1.0, ISBN 0-201-56788-1, Oct 1991
  768. `us-dk'
  769.      for compatibility with ASCII
  770. File: recode.info,  Node: ISO charsets,  Next: IBM charsets,  Prev: RFC 1345 charsets,  Up: Top
  771. Charsets based on ASCII
  772. ***********************
  773. * Menu:
  774. * ascii::               Usual ASCII
  775. * ISO 8859-1 charset::  ASCII extended by Latin Alphabets
  776. * ascii-bs::            ASCII 7-bits, BS to overstrike
  777. * flat::                ASCII without diacritics nor underline
  778. File: recode.info,  Node: ascii,  Next: ISO 8859-1 charset,  Prev: ISO charsets,  Up: ISO charsets
  779. Usual ASCII
  780. ===========
  781.    This charset is available in `recode' under the name `ascii'.  In
  782. fact, it's true name is `ANSI_X3.4-1968' as per RFC 1345, accepted
  783. aliases being `ANSI_X3.4-1986', `ASCII', `IBM367', `ISO646-US',
  784. `ISO_646.irv:1991', `US-ASCII', `cp367', `iso-ir-6' and `us'.  The
  785. shortest way of specifying it in `recode' is `us'.
  786.    This documentation used to include ASCII tables.  They have been
  787. removed since `recode' can now recreate these (and a lot of others)
  788. easily:
  789.      recode -lf ascii                for commented ASCII
  790.      recode -ld ascii                for concise decimal table
  791.      recode -lo ascii                for concise octal table
  792.      recode -lh ascii                for concise hexadecimal table
  793. File: recode.info,  Node: ISO 8859-1 charset,  Next: ascii-bs,  Prev: ascii,  Up: ISO charsets
  794. ASCII extended by Latin Alphabets
  795. =================================
  796.    This charset is available in `recode' under the name `latin1'.  In
  797. fact, it's true name is `ISO_8859-1:1987' as per RFC 1345, accepted
  798. aliases being `CP819', `IBM819', `ISO-8859-1', `ISO_8859-1',
  799. `iso-ir-100', `l1' and `latin1'.  The shortest way of specifying it in
  800. `recode' is `l1'.
  801.    This charset corresponds to the ISO Latin Alphabet 1.  It is an
  802. eight-bit code which coincides with ASCII for the lower half.
  803.    This documentation used to include Latin-1 tables.  They have been
  804. removed since `recode' can now recreate these (and a lot of others)
  805. easily:
  806.      recode -lf latin1               for commented ISO Latin-1
  807.      recode -ld latin1               for concise decimal table
  808.      recode -lo latin1               for concise octal table
  809.      recode -lh latin1               for concise hexadecimal table
  810.    The following from `lasko@video.dec.com' (Tim Lasko), with no date.
  811.      ISO Latin-1, or more completely ISO Latin Alphabet No 1, is now an
  812.      international standard as of February 1987 (IS 8859, Part 1).  For
  813.      those American USEnet'rs that care, the 8-bit ASCII standard,
  814.      which is essentially the same code, is going through the final
  815.      administrative processes prior to publication.
  816.      ISO Latin-1 (IS 8859/1) is actually one of an entire family of
  817.      eight-bit one-byte character sets, all having ASCII on the left
  818.      hand side, and with varying repertoires on the right hand side:
  819.      Pt 1.   Latin Alphabet No 1  (caters to Western Europe - now approved)
  820.      Pt 2.   Latin Alphabet No 2  (caters to Eastern Europe - now approved)
  821.      Pt 3.   Latin Alphabet No 3  (caters to SE Europe + others - in draft ballot)
  822.      Pt 4.   Latin Alphabet No 4  (caters to Northern Europe - in draft ballot)
  823.      Pt 5.   Latin-Cyrillic alphabet  (right half all Cyrillic - processing
  824.                                         currently suspended pending USSR input)
  825.      Pt 6.   Latin-Arabic alphabet    (right half all Arabic - now approved)
  826.      Pt 7.   Latin-Greek alphabet     (right half Greek + symbols - in draft ballot)
  827.      Pt 8.   Latin-Hebrew alphabet    (right half Hebrew + symbols - proposed)
  828. File: recode.info,  Node: ascii-bs,  Next: flat,  Prev: ISO 8859-1 charset,  Up: ISO charsets
  829. ASCII 7-bits, BS to overstrike
  830. ==============================
  831.    This charset is available in `recode' under the name `ascii-bs'.
  832.    The file is straight ASCII, seven bits only.  According to the
  833. definition of ASCII: diacritics are applied by a sequence of three
  834. characters: the letter, one BS, the diacritic mark.  We deviate
  835. slightly from this by exchanging the diacritic mark and the letter so,
  836. on a screen device, the diacritic will disappear and let the letter
  837. alone.  At recognition time, both methods are acceptable.
  838.    The French quotes are coded by the sequences: `< BS "' or `" BS <'
  839. for the opening quote and `> BS "' or `" BS >' for the closing quote.
  840. This artifical convention was inherited in straight `ascii-bs' from
  841. habits around `bangbang' entry, and is not well known.  But we decided
  842. to stick to it so that `ascii-bs' charset will not loose French quotes.
  843.    The `ascii-bs' charset is independant of `ascii', and different.
  844. The following examples demonstrate this, knowing at advance that `!2'
  845. is the `bangbang' way of representing an `e' with an acute accent.
  846. Compare:
  847.      % echo \!2 | recode -v bang:ascii | od -bc
  848.      bangbang -> iso-8859-1-1987 -> rfc1345 -> ansi-x3.4-1968  (many to one)
  849.      bangbang -> iso-8859-1-1987 -> ansi-x3.4-1968  (many to one)
  850.      0000000 351 012
  851.          351  \n
  852.      0000002
  853. with:
  854.      % echo \!2 | recode -v bang:ascii-bs | od -bc
  855.      bangbang -> iso-8859-1-1987 -> ascii-bs  (many to many)
  856.      0000000 047 010 145 012
  857.            '  \b   e  \n
  858.      0000004
  859.    In the first case, the `e' with an acute accent is merely
  860. transmitted by the `latin1:ascii' mapping, not having a special
  861. recoding rule for it.  In the `latin1:ascii-bs' case, the acute accent
  862. is applied over the `e' with a backspace: diacriticized characters have
  863. special rules.  For the `ascii-bs' charset, reversibility is still
  864. possible, but there might be difficult cases.
  865. File: recode.info,  Node: flat,  Prev: ascii-bs,  Up: ISO charsets
  866. ASCII without diacritics nor underline
  867. ======================================
  868.    This charset is available in `recode' under the name `flat'.
  869.    This code is ASCII expunged of all diacritics and underlines, as
  870. long as they are applied using three character sequences, with BS in the
  871. middle.  Also, despite slightly unrelated, each control character is
  872. represented by a sequence of two or three graphic characters.  The
  873. newline character, however, keeps its functionnality and is not
  874. represented.
  875.    Note that charset `flat' is a terminal charset.  We can convert *to*
  876. `flat', but not *from* it.
  877. File: recode.info,  Node: IBM charsets,  Next: CDC charsets,  Prev: ISO charsets,  Up: Top
  878. Charsets based on IBM
  879. *********************
  880. * Menu:
  881. * ebcdic::              EBCDIC codes
  882. * ibmpc::               IBM's PC code
  883. * iconqnx::             Unisys' ICON code
  884. File: recode.info,  Node: ebcdic,  Next: ibmpc,  Prev: IBM charsets,  Up: IBM charsets
  885. EBCDIC code
  886. ===========
  887.    This charset is the IBM's external binary coded decimal for
  888. interchange coding.  This is an eight bits code.  The following three
  889. variants were implemented in GNU `recode' independantly of RFC 1345:
  890. `ebcdic'
  891.      This charset represents the way Control Data Corporation relates
  892.      EBCDIC to 8-bits ASCII.  GNU `dd' `ebcdic' conversion is identical.
  893. `ebcdic-ccc'
  894.      This charset represents the way Concurrent Computer Corporation
  895.      (formerly Perkin Elmer) relates EBCDIC to 8-bits ASCII.
  896. `ebcdic-ibm'
  897.      This charset is almost identical to the GNU `dd' `ibm' conversion.
  898.      For the GNU `dd' `ibm' table, `recode' said:
  899.           Codes  91 and 213 both recode to 173
  900.           Codes  93 and 229 both recode to 189
  901.           No character recodes to  74
  902.           No character recodes to 106
  903.      So I arbitrarily chose to recode 213 by 74 and 229 by 106.  This
  904.      makes the `ebcdic-ibm' recoding reversible, but this is not
  905.      necessarily the best correction.  In any case, I believe GNU `dd'
  906.      should be corrected, and preferrably, GNU `dd' and GNU `recode'
  907.      should agree on the correction.  So, this table may change once
  908.      again.
  909.    RFC 1345 brings in `recode' 15 other EBCDIC charsets, and 21 other
  910. charsets having EBCDIC in at least one of their alias names.  You can
  911. get a list of all these by executing:
  912.      recode -l | grep ebcdic
  913. File: recode.info,  Node: ibmpc,  Next: iconqnx,  Prev: ebcdic,  Up: IBM charsets
  914. IBM's PC code
  915. =============
  916.    This charset is available in `recode' under the name `ibmpc'.  There
  917. are a few discrepancies between this charset and the very similar RFC
  918. 1345 charset `ibm437', which have not been analyzed yet, so the
  919. charsets are being kept separate for now.  This might change in the
  920. future.
  921.    The file was obtained or is aimed towards a PC microcomputer from
  922. IBM or any compatible.  This is an eight-bit code.
  923. File: recode.info,  Node: iconqnx,  Prev: ibmpc,  Up: IBM charsets
  924. Unisys' ICON code
  925. =================
  926.    This charset is available in `recode' under the name `iconqnx'.
  927.    The file is using Unisys' ICON way to represent diacritics with code
  928. 25 escape sequences.  This is a seven-bit code, even if eight-bit codes
  929. can flow through as part of IBM-PC charset.
  930. File: recode.info,  Node: CDC charsets,  Next: Micro charsets,  Prev: IBM charsets,  Up: Top
  931. Charsets based on CDC
  932. *********************
  933. * Menu:
  934. * Display Code::        Control Data's Display Code
  935. * cdcnos::              ASCII 6/12 from NOS
  936. * bangbang::            ASCII "bang bang"
  937. File: recode.info,  Node: Display Code,  Next: cdcnos,  Prev: CDC charsets,  Up: CDC charsets
  938. Control Data's Display Code
  939. ===========================
  940.    This code is not available in `recode', but repeated here for
  941. reference.  This is a 6-bit code used on CDC mainframes.
  942.      Octal display code to graphic       Octal display code to octal ASCII
  943.      
  944.      00  :    20  P    40  5   60  #     00 072  20 120  40 065  60 043
  945.      01  A    21  Q    41  6   61  [     01 101  21 121  41 066  61 133
  946.      02  B    22  R    42  7   62  ]     02 102  22 122  42 067  62 135
  947.      03  C    23  S    43  8   63  %     03 103  23 123  43 070  63 045
  948.      04  D    24  T    44  9   64  "     04 104  24 124  44 071  64 042
  949.      05  E    25  U    45  +   65  _     05 105  25 125  45 053  65 137
  950.      06  F    26  V    46  -   66  !     06 106  26 126  46 055  66 041
  951.      07  G    27  W    47  *   67  &     07 107  27 127  47 052  67 046
  952.      10  H    30  X    50  /   70  '     10 110  30 130  50 057  70 047
  953.      11  I    31  Y    51  (   71  ?     11 111  31 131  51 050  71 077
  954.      12  J    32  Z    52  )   72  <     12 112  32 132  52 051  72 074
  955.      13  K    33  0    53  $   73  >     13 113  33 060  53 044  73 076
  956.      14  L    34  1    54  =   74  @     14 114  34 061  54 075  74 100
  957.      15  M    35  2    55      75  \     15 115  35 062  55 040  75 134
  958.      16  N    36  3    56  ,   76  ^     16 116  36 063  56 054  76 136
  959.      17  O    37  4    57  .   77  ;     17 117  37 064  57 056  77 073
  960. File: recode.info,  Node: cdcnos,  Next: bangbang,  Prev: Display Code,  Up: CDC charsets
  961. ASCII 6/12 from NOS
  962. ===================
  963.    This charset is available in `recode' under the name `cdcnos'.
  964.    This is one of the charset in use on CDC Cyber NOS systems to
  965. represent ASCII, sometimes named "NOS 6/12" code for coding ASCII.
  966. This code is also known as "caret ASCII".  It is based on a six bits
  967. character set in which small letters and control characters are coded
  968. using a `^' escape and, sometimes, a `@' escape.
  969.    The routines given here presume that the six bits code is already
  970. expressed in ASCII by the communication channel, with embedded ASCII
  971. `^' and `@' escapes.
  972.    Here is a table showing which characters are being used to encode
  973. each ASCII character.
  974.      000  ^5  020  ^#  040     060  0  100 @A  120  P  140  @G  160  ^P
  975.      001  ^6  021  ^[  041  !  061  1  101  A  121  Q  141  ^A  161  ^Q
  976.      002  ^7  022  ^]  042  "  062  2  102  B  122  R  142  ^B  162  ^R
  977.      003  ^8  023  ^%  043  #  063  3  103  C  123  S  143  ^C  163  ^S
  978.      004  ^9  024  ^"  044  $  064  4  104  D  124  T  144  ^D  164  ^T
  979.      005  ^+  025  ^_  045  %  065  5  105  E  125  U  145  ^E  165  ^U
  980.      006  ^-  026  ^!  046  &  066  6  106  F  126  V  146  ^F  166  ^V
  981.      007  ^*  027  ^&  047  '  067  7  107  G  127  W  147  ^G  167  ^W
  982.      010  ^/  030  ^'  050  (  070  8  110  H  130  X  150  ^H  170  ^X
  983.      011  ^(  031  ^?  051  )  071  9  111  I  131  Y  151  ^I  171  ^Y
  984.      012  ^)  032  ^<  052  *  072 @D  112  J  132  Z  152  ^J  172  ^Z
  985.      013  ^$  033  ^>  053  +  073  ;  113  K  133  [  153  ^K  173  ^0
  986.      014  ^=  034  ^@  054  ,  074  <  114  L  134  \  154  ^L  174  ^1
  987.      015  ^   035  ^\  055  -  075  =  115  M  135  ]  155  ^M  175  ^2
  988.      016  ^,  036  ^^  056  .  076  >  116  N  136 @B  156  ^N  176  ^3
  989.      017  ^.  037  ^;  057  /  077  ?  117  O  137  _  157  ^O  177  ^4
  990. File: recode.info,  Node: bangbang,  Prev: cdcnos,  Up: CDC charsets
  991. ASCII "bang bang"
  992. =================
  993.    This charset is available in `recode' under the name `bangbang'.
  994.    This is the local code in use on Cybers at Universite de Montreal,
  995. which grave and serious people there prefer to name "ASCII code
  996. display".  This code is also known as "Bang-bang".  It is based on a
  997. six bits character set in which capitals, French diacritics and a few
  998. others are coded using an `!' escape followed by a single character, and
  999. control characters using a double `!' escape followed by a single
  1000. character.
  1001.    The routines given here presume that the six bits code is already
  1002. expressed in ASCII by the communication channel, with embedded ASCII `!'
  1003. escapes.
  1004.    Here is a table showing which characters are being used to encode
  1005. each ASCII character.
  1006.      000 !!@  020 !!P  040    060 0  100 @   120 !P  140 !@ 160 P
  1007.      001 !!A  021 !!Q  041 !" 061 1  101 !A  121 !Q  141 A  161 Q
  1008.      002 !!B  022 !!R  042 "  062 2  102 !B  122 !R  142 B  162 R
  1009.      003 !!C  023 !!S  043 #  063 3  103 !C  123 !S  143 C  163 S
  1010.      004 !!D  024 !!T  044 $  064 4  104 !D  124 !T  144 D  164 T
  1011.      005 !!E  025 !!U  045 %  065 5  105 !E  125 !U  145 E  165 U
  1012.      006 !!F  026 !!V  046 &  066 6  106 !F  126 !V  146 F  166 V
  1013.      007 !!G  027 !!W  047 '  067 7  107 !G  127 !W  147 G  167 W
  1014.      010 !!H  030 !!X  050 (  070 8  110 !H  130 !X  150 H  170 X
  1015.      011 !!I  031 !!Y  051 )  071 9  111 !I  131 !Y  151 I  171 Y
  1016.      012 !!J  032 !!Z  052 *  072 :  112 !J  132 !Z  152 J  172 Z
  1017.      013 !!K  033 !![  053 +  073 ;  113 !K  133 [   153 K  173 ![
  1018.      014 !!L  034 !!\  054 ,  074 <  114 !L  134 \   154 L  174 !\
  1019.      015 !!M  035 !!]  055 -  075 =  115 !M  135 ]   155 M  175 !]
  1020.      016 !!N  036 !!^  056 .  076 >  116 !N  136 ^   156 N  176 !^
  1021.      017 !!O  037 !!_  057 /  077 ?  117 !O  137 _   157 O  177 !_
  1022. File: recode.info,  Node: Micro charsets,  Next: Other charsets,  Prev: CDC charsets,  Up: Top
  1023. Non-IBM micro-computer charsets
  1024. *******************************
  1025. * Menu:
  1026. * applemac::            Apple's Macintosh code
  1027. * atarist::             Atari ST code
  1028. * nextstep::            NeXT international code
  1029. File: recode.info,  Node: applemac,  Next: atarist,  Prev: Micro charsets,  Up: Micro charsets
  1030. Apple's Macintosh code
  1031. ======================
  1032.    This charset is available in `recode' under the name `applemac'.
  1033. There are a few discrepancies between this charset and the very similar
  1034. RFC 1345 charset `macintosh', which have not been analyzed yet, so the
  1035. charsets are being kept separate for now.  This might change in the
  1036. future.
  1037.    The file has been obtained or is aimed to a Macintosh micro-computer
  1038. from Apple.  This is an eight bit code.  The file is the data fork only.
  1039. File: recode.info,  Node: atarist,  Next: nextstep,  Prev: applemac,  Up: Micro charsets
  1040. Atari ST code
  1041. =============
  1042.    This charset is available in `recode' under the name `atarist'.
  1043.    This is the character set used on the Atari ST/TT/Falcon.  This is
  1044. similar to `ibmpc', but differs in some details (includes some more
  1045. accented characters, the graphic characters are mostly replaced by
  1046. hebrew characters, and there is a true german sharp s different from
  1047. greek beta).
  1048.    About the end-of-line conversions: the canonical end-of-line on the
  1049. Atari is `\r\n', but unlike `ibmpc', the OS makes no difference between
  1050. text and binary input/output; it is up to the application how to
  1051. interpret the data.  In fact, most of the libraries that come with
  1052. compilers can grok both `\r\n' and `\n' as end of lines.  Many of the
  1053. users who also have access to Unix systems prefer `\n' to ease porting
  1054. Unix utilities.  So, for easing reversibility, `recode' tries to let
  1055. `\r' undisturbed through recodings.
  1056. File: recode.info,  Node: nextstep,  Prev: atarist,  Up: Micro charsets
  1057. NeXT international code
  1058. =======================
  1059.    This charset is available in `recode' under the name `NeXTSTEP'.
  1060.    The NeXTSTEP encoding is an extension to the ISO Latin-1 ASCII
  1061. encoding used by NeXT.  It is identical to Latin-1 for the positions
  1062. 0-127.  In the position 128-255, NeXT added some chars and shuffled
  1063. them around a little bit (for some unknown reason).
  1064. File: recode.info,  Node: Other charsets,  Next: Internals,  Prev: Micro charsets,  Up: Top
  1065. Some other charsets
  1066. *******************
  1067.    Even if these charsets were originally added to `recode' for
  1068. handling texts written in French, they find other uses.  We did use them
  1069. lot for writing French diacriticized texts in the past, so `recode'
  1070. knows how to handle these particularily well for French texts.
  1071. * Menu:
  1072. * latex::               ASCII with LaTeX codes
  1073. * texte::               ASCII with easy French conventions
  1074. File: recode.info,  Node: latex,  Next: texte,  Prev: Other charsets,  Up: Other charsets
  1075. ASCII with LaTeX codes
  1076. ======================
  1077.    This charset is available in `recode' under the name `latex' and has
  1078. `ltex' as an alias.  It is used for ASCII files coded to be read by
  1079. LaTeX or, in certain cases, by TeX.
  1080.    Whenever you recode from another charset to `latex', beware that all
  1081. occurrences of backslashes (`\') are usually translated into the string
  1082. `\backslash{}'.  However, in practice, people often use backslashes in
  1083. the other charset for introducing TeX commands, compromising it: it is
  1084. not pure TeX, nor it is pure other charset.  This translation of
  1085. backslashes into `\backslash{}' can be rather inconvenient, it may be
  1086. inhibited through the command option `-d'.
  1087. File: recode.info,  Node: texte,  Prev: latex,  Up: Other charsets
  1088. ASCII with easy French conventions
  1089. ==================================
  1090.    This charset is available in `recode' under the name `texte' and has
  1091. `txte' for an alias.
  1092.    This charset is identical to `ascii-bs', save for French diacritics
  1093. which are noted using a slightly different convention.
  1094.    These conventions are used in `texte' and `latexte' charsets, which
  1095. are seven bits codes.  At text entry time, these conventions provide a
  1096. little speed up.  At read time, they slightly improve the readability.
  1097. Of course, it would better to have a specialized keyboard to make
  1098. direct eight bits entries and fonts for immediately displaying eight
  1099. bit ISO Latin-1 characters.  But not everybody is so fortunate.  In
  1100. several mailing environment, the eight bit is often willfully destroyed
  1101. (an horrible Crime that most people do not care to straighten up).
  1102.    Easy French has been in use in France for a while.  I only slightly
  1103. adapted it (the diaeresis option) to make it more comfortable to several
  1104. usages in Qu'ebec originating from Universit'e de Montr'eal.  In fact,
  1105. the main problem for me was not to necessarily to invent Easy French,
  1106. but to recognize the "best" convention to use, (best is not being
  1107. defined, here) and to try to solve the main pithfalls associated with
  1108. the selected convention.
  1109. * Menu:
  1110. * Diacritics::          Diacritics
  1111. * Ending diaeresis::    List of words ending with diaeresis
  1112. File: recode.info,  Node: Diacritics,  Next: Ending diaeresis,  Prev: texte,  Up: texte
  1113. Diacritics
  1114. ----------
  1115.    French quotes (sometimes called "angle quotes") are noted the same
  1116. way English quotes are noted in TeX, *id est* by ```' and `'''.
  1117.    No effort has been put to preserve Latin ligatures (`ae', `oe')
  1118. which are representable in several other charsets.  So, these ligatures
  1119. may be lost through Easy French conventions.
  1120.    This is almost the French convention for simplified diacritics entry:
  1121.      Acute accent
  1122.      Grave accent
  1123.      Circumflex accent
  1124.      Diaeresis
  1125.      Cedilla
  1126.    In some countries, `:' is used instead of `"' to mark diaeresis.
  1127. `recode' support one convention on a single call, depending on the `-c'
  1128. option of the `recode' command.
  1129.    The convention is prone to loosing information, because the diacritic
  1130. meaning overloads some characters that already have other uses.  To
  1131. alleviate this, some knowledge of the French language is insufflated
  1132. into the recognition routines.  So, the following subtleties are
  1133. systematically obeyed by the various recognizers.
  1134.    * A single quote which follows a `e' does not necessarily means an
  1135.      acute accent if it is followed by a single other one.  For example:
  1136.     `e''
  1137.           will give an `e' with an acute accent.
  1138.     `e'''
  1139.           will give a simple `e', with a closing quotation mark.
  1140.     `e''''
  1141.           will give an `e' with an acute accent, followed by a closing
  1142.           quotation mark.
  1143.      There is a problem induced by this convention if there are English
  1144.      citations with a French text.  In sentences like:
  1145.           There's a meeting at Archie's restaurant.
  1146.      the single quotes will be mistaken twice for acute accents.  So
  1147.      English contractions and suffix possessives could be mangled.
  1148.    * A double quote or colon, depending on `-c' option, which follows a
  1149.      vowel is interpreted as diaeresis only if it is followd by another
  1150.      letter.  But there are in French several words that *end* with a
  1151.      diaeresis, the program also recognizes them.  *Note Ending
  1152.      diaeresis::, for a study of all the problematic cases.
  1153.    * A comma which follows a `c' is interpreted as a cedilla only if it
  1154.      is followd by one of the vowels `a', `o' and `u'.
  1155. File: recode.info,  Node: Ending diaeresis,  Prev: Diacritics,  Up: texte
  1156. List of words ending with diaeresis
  1157. -----------------------------------
  1158.    Here is a classification of all cases of a diaeresis at the end of a
  1159. French word:
  1160.    * Words ending in "igue"
  1161.         - Feminine words without a relative masculine:
  1162.                besaigue" cigue"
  1163.         - Feminine words with a relative masculine: (1)
  1164.                aigue" ambigue" contigue" exigue" subaigue" suraigue"
  1165.    * Words not ending in "igue"
  1166.         - Ended by "i": (2)
  1167.                ai" congai" goi" hai"kai" inoui" sai" samurai" thai" tokai"
  1168.         - Ended by "e":
  1169.                canoe"
  1170.         - Ended by "u": (3)
  1171.                Esau"
  1172.    Notes:
  1173.   1. There are supposed to be seven words in this case.  So, one is
  1174.      missing.
  1175.   2. Look at the following sentence:
  1176.           "Ai"e!  Voici le proble`me que j'ai"
  1177.      or, using the `-c' option:
  1178.           Ai:e!  Voici le proble`me que j'ai:
  1179.      There is an ambiguity between an *ai"*, the small animal, and the
  1180.      indicative future of *avoir* (first person singular), when
  1181.      followed by what could be a diaeresis mark.  Hopefully, the case
  1182.      is solved by the fact that an apostrophe always precedes the verb
  1183.      and almost never the animal.
  1184.   3. I did not pay attention to proper nouns, but this one showed up as
  1185.      being fairly evident.
  1186.    Just to complete this topic, note that it would be wrong to make a
  1187. rule for all words ending in "igue" as needing a diaerisis.  Here are
  1188. counter-examples:
  1189.      becfigue be`sigue bigue bordigue bourdigue brigue contre-digue
  1190.      digue d'intrigue fatigue figue garrigue gigue igue intrigue
  1191.      ligue prodigue sarigue zigue
  1192. File: recode.info,  Node: Internals,  Prev: Other charsets,  Up: Top
  1193. Internal aspects
  1194. ****************
  1195.    Suppose that four elementary steps are selected at path optimization
  1196. time.  Then `recode' will split itself into four different tasks
  1197. interconnected with pipes, logically equivalent to:
  1198.      STEP1 <INPUT | STEP2 | STEP3 | STEP4 >OUTPUT
  1199. * Menu:
  1200. * Main flow::           Overall organization
  1201. * New charsets::        Adding new charsets
  1202. File: recode.info,  Node: Main flow,  Next: New charsets,  Prev: Internals,  Up: Internals
  1203. Overall organization
  1204. ====================
  1205.    The main driver constructs, while initializing all conversion
  1206. modules, a table giving all the conversion routines available ("single
  1207. step"s) and for each, the starting charset and the ending charset.  If
  1208. we consider these charsets as being the nodes of a directed graph, each
  1209. single step may be considered as oriented arc from one node to the
  1210. other.  A cost is attributed to each arc: for example, a high penality
  1211. is given to single steps which are prone to loosing characters, a low
  1212. penality is given to those which need studying more than one input
  1213. character for producing an output character, etc.
  1214.    Given a starting code and a goal code, `recode' computes the most
  1215. economical route through the elementary recodings, that is, the best
  1216. sequence of conversions that will transform the input charset into the
  1217. final charset.  To speed up execution, `recode' looks for subsequences
  1218. of conversions which are simple enough to be merged, it then
  1219. dynamically creates new single steps, of course, use them.
  1220.    A "double step" is a sequence of two single steps, the output of the
  1221. first being the special charset `rfc1345' (which is not directly
  1222. available to the user), the input of the second single step being also
  1223. `rfc1345'.  A special machinery dynamically produces efficient,
  1224. reversible, mergeable single steps out of these double steps.
  1225.    The main part of `recode' is written in C, as are most single steps.
  1226. A few single steps need to recognize sequences of multiple characters,
  1227. they are often better written in `flex'.
  1228. File: recode.info,  Node: New charsets,  Prev: Main flow,  Up: Internals
  1229. Adding new charsets
  1230. ===================
  1231.    It is easy for a programmer to add a new charset to `recode'.  All
  1232. it requires is making a few functions kept in a single `.c' file,
  1233. adjusting `Makefile.in', and remaking `recode'.
  1234.    One of the function should convert from any previous charset to the
  1235. new one.  Any previous charset will do, but try to select it so you
  1236. will not loose too much information while converting.  The other
  1237. function should convert from the new charset to any older one.  You do
  1238. not have to select the same old charset than what you selected for the
  1239. previous routine.  Once again, select any charset for which you will
  1240. not loose too much information while converting.
  1241.    If, for any of these two functions, you have to read multiple bytes
  1242. of the old charset before recognizing the character to produce, you
  1243. might prefer programming it in `flex' in a separate `.l' file.
  1244. Prototype your C or `flex' files after one of those which exist
  1245. already, so to keep the sources uniform.  Besides, at `make' time, all
  1246. `.l' files are automatically merged into a single big one by the script
  1247. `mergelex.awk', which requires sources to follow some rules.  Mimetism
  1248. is a simple approach which relieves me of explaining all these rules!
  1249.    Each of your source files should have its own initialization
  1250. function, named `module_CHARSET', which is meant to be executed
  1251. quickly, once, prior to any recoding.  It should declare the name of
  1252. your charsets and the single steps (or elementary recodings) you
  1253. provide, by calling `declare_step' one or more times.  Besides the
  1254. charset names, `declare_step' expects a description of the recoding
  1255. quality (see `recode.h') and two functions you also provide.
  1256.    The first such function has the purpose of allocating structures,
  1257. preconditionning conversion tables, etc.  It is also the usual way of
  1258. further modifying the `STEP' structure.  This function is executed only
  1259. if and when the single step is retained in an actual recoding sequence.
  1260. If you do not need such delayed initialization, merely use NULL for
  1261. the function argument.
  1262.    The second function executes the elementary recoding on a whole file.
  1263. There are a few cases when you can spare writing this function:
  1264.    * Some single steps do nothing else than a pure copy of the input
  1265.      onto the output, in this case, you can use the predefined function
  1266.      `file_one_to_one', but have a delayed initialization for presetting
  1267.      the field `one_to_one' to the predefined value `one_to_same'.
  1268.    * Some single steps are driven by a table which recodes one
  1269.      character into another; if the recoding does nothing else, you can
  1270.      use the predefined function `file_one_to_one', but have a delayed
  1271.      initialization for presetting the `STEP' field `one_to_one' with
  1272.      your table.
  1273.    * Some single steps are driven by a table which recodes one
  1274.      character into a string; if the recoding does nothing else, you
  1275.      can use the predefined function `file_one_to_many', but have a
  1276.      delayed initialization for presetting the `STEP' field
  1277.      `one_to_many' with your table.
  1278.    If you have a recoding table handy in a suitable format but do not
  1279. use one of the predefined recoding functions, it is still a good idea
  1280. to use a delayed initialization to save it anyway, because `recode'
  1281. option `-h' will take advantage of this information when available.
  1282.    Finally, edit `Makefile.in' to add the source file name of your
  1283. routines to the `C_STEPS' or `L_STEPS' macro definition, depending on
  1284. the fact your routines is written in C or in `flex'.  For C files only,
  1285. also modify the `STEPOBJS' macro definition.
  1286. Tag Table:
  1287. Node: Top
  1288. Node: Introduction
  1289. Node: Overview
  1290. Node: Contributing
  1291. Node: Invoking recode
  1292. Node: RFC 1345 charsets
  1293. 22239
  1294. Node: ISO charsets
  1295. 38682
  1296. Node: ascii
  1297. 39052
  1298. Node: ISO 8859-1 charset
  1299. 39892
  1300. Node: ascii-bs
  1301. 42204
  1302. Node: flat
  1303. 44201
  1304. Node: IBM charsets
  1305. 44870
  1306. Node: ebcdic
  1307. 45136
  1308. Node: ibmpc
  1309. 46624
  1310. Node: iconqnx
  1311. 47142
  1312. Node: CDC charsets
  1313. 47506
  1314. Node: Display Code
  1315. 47795
  1316. Node: cdcnos
  1317. 49306
  1318. Node: bangbang
  1319. 51233
  1320. Node: Micro charsets
  1321. 53141
  1322. Node: applemac
  1323. 53447
  1324. Node: atarist
  1325. 54026
  1326. Node: nextstep
  1327. 55025
  1328. Node: Other charsets
  1329. 55474
  1330. Node: latex
  1331. 55995
  1332. Node: texte
  1333. 56777
  1334. Node: Diacritics
  1335. 58247
  1336. Node: Ending diaeresis
  1337. 60544
  1338. Node: Internals
  1339. 62261
  1340. Node: Main flow
  1341. 62708
  1342. Node: New charsets
  1343. 64371
  1344. End Tag Table
  1345.